Object-oriented programming (OOP) provides techniques for creating binary software components (objects) that can interact with each other. One example of OOP is the Component Object Model (COM). COM specifies an object model and programming requirements that enable this object interaction. A COM object can be created using one of a variety of different programming languages (e.g., C++, Visual Basic, and so on). The flexibility and simplicity of COM have enabled it to become a widely adopted and long-lived standard. However, certain aspects of COM present challenges when creating a graphical user interface (GUI).
First, COM typically lacks the ability to support a new object class which extends from a base class. As a result, a first party is unable to create a COM object that derives from and extends a COM object that is created by another party. Second, it is difficult to interface COM objects with declarative markup languages (e.g., XAML) to specify layouts, appearances, behaviors of a particular part or parts of a GUI. These particular challenges can make it difficult for COM to be used to implement a GUI.